package e.ptextarea;

public class PPBasicTextStyler extends PAbstractLanguageStyler {
    public PPBasicTextStyler(PTextArea textArea) {
        super(textArea);
    }
    
    @Override protected boolean isStartOfCommentToEndOfLine(String line, int atIndex) {
        return line.startsWith("'", atIndex);
    }
    
    @Override protected boolean supportMultiLineComments() {
        return false;
    }
    
    @Override protected boolean isQuote(char ch) {
        return (ch == '\"');
    }
    
    @Override public boolean keywordsAreCaseSensitive() {
        return false;
    }
    
    // See http://www.parallax.com/html_pages/downloads/basicstamps/documentation_basic_stamp.asp.
    public String[] getKeywords() {
        return new String[] {
            "#case",
            "#define",
            "#else",
            "#endif",
            "#endselect",
            "#error",
            "#if",
            "#select",
            "#then",
            "$pbasic",
            "$port",
            "$stamp",
            "abs",
            "and",
            "asc",
            "atn",
            "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20", "b21", "b22", "b23", "b24", "b25",
            "bell",
            "bin",
            "bin1", "bin2", "bin3", "bin4", "bin5", "bin6", "bin7", "bin8", "bin9", "bin10", "bin11", "bin12", "bin13", "bin14", "bin15", "bin16",
            "bit",
            "bit1", "bit2", "bit3", "bit4", "bit5", "bit6", "bit7", "bit8", "bit9", "bit10", "bit11", "bit12", "bit13", "bit14", "bit15",
            "bksp",
            "branch",
            "bright",
            "bs1",
            "bs2",
            "bs2e",
            "bs2p",
            "bs2pe",
            "bs2sx",
            "button",
            "byte",
            "byte0",
            "byte1",
            "case",
            "clrdn",
            "clreol",
            "cls",
            "con",
            "cos",
            "count",
            "cr",
            "crsrdn",
            "crsrlf",
            "crsrrt",
            "crsrup",
            "crsrx",
            "crsrxy",
            "crsry",
            "data",
            "dcd",
            "debug",
            "debugin",
            "dec",
            "dec1", "dec2", "dec3", "dec4", "dec5",
            "dig",
            "dim",
            "dir0", "dir1", "dir2", "dir3", "dir4", "dir5", "dir6", "dir7", "dir8", "dir9", "dir10", "dir11", "dir12", "dir13", "dir14", "dir15",
            "dira",
            "dirb",
            "dirc",
            "dird",
            "dirh",
            "dirl",
            "dirs",
            "do",
            "dtmfout",
            "else",
            "elseif",
            "end",
            "endif",
            "endselect",
            "exit",
            "for",
            "freqout",
            "gosub",
            "goto",
            "hex",
            "hex1", "hex2", "hex3", "hex4",
            "high",
            "highbit",
            "highbyte",
            "highnib",
            "home",
            "hyp",
            "ibin",
            "ibin1", "ibin2", "ibin3", "ibin4", "ibin5", "ibin6", "ibin7", "ibin8", "ibin9", "ibin10", "ibin11", "ibin12", "ibin13", "ibin14", "ibin15", "ibin16",
            "if",
            "ihex",
            "ihex1", "ihex2", "ihex3", "ihex4",
            "in0", "in1", "in2", "in3", "in4", "in5", "in6", "in7", "in8", "in9", "in10", "in11", "in12", "in13", "in14", "in15",
            "ina",
            "inb",
            "inc",
            "ind",
            "inh",
            "inl",
            "input",
            "ins",
            "isbin",
            "isbin1", "isbin2", "isbin3", "isbin4", "isbin5", "isbin6", "isbin7", "isbin8", "isbin9", "isbin10", "isbin11", "isbin12", "isbin13", "isbin14", "isbin15", "isbin16",
            "ishex",
            "ishex1", "ishex2", "ishex3", "ishex4",
            "lf",
            "lightson",
            "lookdown",
            "lookup",
            "loop",
            "low",
            "lowbit",
            "lowbyte",
            "lownib",
            "lsbfirst",
            "lsbpost",
            "lsbpre",
            "max",
            "min",
            "msbfirst",
            "msbpost",
            "msbpre",
            "nap",
            "ncd",
            "next",
            "nib",
            "nib0", "nib1", "nib2", "nib3",
            "not",
            "num",
            "on",
            "or",
            "out0", "out1", "out2", "out3", "out4", "out5", "out6", "out7", "out8", "out9", "out10", "out11", "out12", "out13", "out14", "out15",
            "outa",
            "outb",
            "outc",
            "outd",
            "outh",
            "outl",
            "output",
            "outs",
            "pause",
            "pin",
            "pulsin",
            "pulsout",
            "pwm",
            "random",
            "rctime",
            "read",
            "rep",
            "return",
            "rev",
            "reverse",
            "sbin",
            "sbin1", "sbin2", "sbin3", "sbin4", "sbin5", "sbin6", "sbin7", "sbin8", "sbin9", "sbin10", "sbin11", "sbin12", "sbin13", "sbin14", "sbin15", "sbin16",
            "sdec",
            "sdec1", "sdec2", "sdec3", "sdec4", "sdec5",
            "select",
            "serin",
            "serout",
            "shex",
            "shex1", "shex2", "shex3", "shex4",
            "shiftin",
            "shiftout",
            "sin",
            "skip",
            "sleep",
            "snum",
            "sqr",
            "step",
            "stop",
            "str",
            "tab",
            "then",
            "to",
            "toggle",
            "unitoff",
            "uniton",
            "unitsoff",
            "until",
            "var",
            "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12",
            "wait",
            "waitstr",
            "while",
            "word",
            "write",
            "xor",
            "xout"
        };
    }
}
